\documentclass{article}
\usepackage{ctex}
\usepackage{geometry}
\usepackage{ragged2e}
\usepackage{graphicx}
\usepackage{enumerate}
\usepackage{listings}
\usepackage{xcolor}
\lstset{
  basicstyle=\ttfamily\small,    % 等宽字体
  numbers=left,                   % 显示行号
  numberstyle=\tiny\color{gray},  % 行号样式
  frame=single,                   % 边框样式
  breaklines=true,                % 自动换行
  keywordstyle=\color{blue},      % 关键字颜色
  commentstyle=\color{green!40!black}, % 注释颜色
  stringstyle=\color{red}         % 字符串颜色
}
\geometry{a4paper,scale=0.7}
\title{熔丝位与串口实验报告}
\author{赵俊宇 PB24061271}
\date{\today}

\begin{document}
\maketitle
\tableofcontents
\section{有关熔丝位错误设置的思考}
熔丝位是Atmel公司产品的独到特征,其物理形态表现为极细的硅丝,当大电流流过时,热量就足够将其熔断.
对熔丝位的配置需要审慎细致,误操作可能会导致MCU进入不可编程甚至不可运行的状态.
比方说,ISP编程对应的SPIEN熔丝位设置为1,将使得MCU不可编程;错误设置时钟,将使得MCU直接不可用.

对于后一种情况,查阅资料,获得了两种解决办法.第一种,使用高压熔丝恢复器,通过并行编程的方式,重新设置熔丝位.第二种,人为叠加一个震荡时钟信号,
此时如果ISP可以对芯片操作,就可以通过编程重新设定.还有方法提到,可以将工作正常的单片机的XTAL2脚连接熔丝设置错误的单片机的XTAL1,这种方法利用的就是外加有源晶振.

不过,这种方法正在被市场淘汰,原因是,通过暴力破解方式,俗称``开盖'',我们可以轻松恢复熔丝位,读出内部程序.
更有甚者,可以设计特殊的探针,在芯片构造清楚的情况下,直接找到程序存储区逆向程序也是可能的.在上海国信DRS数据恢复中心,这种技术已经被广泛应用于读取固态、硬盘、SD卡等.

现在,芯片为了防止开盖等暴力破解和探针等读取数据,已经广泛使用了光传感器和随机算法产生噪声.那么,简单易破解的熔丝位加密被逐渐淘汰,也不是什么意料之外的事了.
\section{串口应用}
串口类似于$I^2C$,可以实现设备间的数据通联.最简单的应用就是输出调试大法,可以让调试程序时输出字符,方便调试.

串口核心代码可以概括为以下几个步骤：
\begin{enumerate}
\item 等待输入数据
\item 读取数据
\item 操作数据
\item 等待发出数据
\item 发出数据
\end{enumerate}

通过switch代码,我们可以输入不同数据来使得MCU有不同的响应.
\end{document}